<?php

use \JPush\Client;

require_once "config.php";
require_once('./jpush/autoload.php');//引入你的 autoload 文件

//极光 通知
class JpushService
{
    protected $AppKey;
    protected $MasterSecret;

    function __construct()
    {

        $this->AppKey = '5d3aab0ec2a3cdf6cc3272fb';
        $this->MasterSecret = '34e1899b273ea35fbcf61f56';
    }

    //极光推送 单用户
    public function push($c_type, $data, $user)
    {
        $andoreArray = [];
        foreach ($user as $k => $v) {
            if ($v['registration_id']) {
                $andoreArray[] = $v['registration_id'];
            }
        }
        if (count($andoreArray) > 0) {
            $res = $this->push_one($c_type, $data, $andoreArray);
        }
        return $res;
    }

    //简单的 极光 通知推送
    public function push_one($c_type, $data, $andoreArray)
    {

        $client = new \JPush\Client($this->AppKey, $this->MasterSecret);
        $push_payload = $client->push()
            ->setPlatform('all') //推送平台设置 当前支持 Android, iOS, Windows Phone 三个平台的推送。其关键字分别为："android", "ios", "winphone"。  推送到所有平台：使用 all
            ->addRegistrationId($andoreArray)//设备标识 多个注册 ID 之间是 OR 关系，即取并集。
//            ->addAllAudience()
            // 通知内容体。是被推送到客户端的内容
            // ->addAlias('alias') //别名推送 用别名来标识一个用户
            // ->addTag(array('tag1', 'tag2')) //标签推送  多个标签之间是 AND 关系，即取交集 。 一次推送最多 20 个。
            ->setNotificationAlert($data['title'])
            ->iosNotification($data['title'], array(
                'sound' => 'sound.caf',//ios 语音播放地址配置
//                'c_type' => $c_type,
                // 'badge' => '+1',
                // 'content-available' => true,
                // 'mutable-content' => true,
                'category' => 'jiguang',
                'extras' => array(
                    'c_type' => $c_type,
                    'room_id' => '5p'.$data['uid'],
                ),
            ))
            ->androidNotification($data['title'], array(
                'title' => $data['content'],//标题
//                'c_type' => $c_type,
                'extras' => array(
                    'c_type' => $c_type,
                    'room_id' => '5p'.$data['uid'],
                ),
            ))
            //  可选参数 下面参数都是选填 根据自己的需要 进行选择 可去掉
            ->options(array(
                'sendno' => 123456,//推送序号 纯粹用来作为 API 调用标识
                'time_to_live' => 86400,//离线消息保留时长(秒) 默认 86400 （1 天），最长 10 天。设置为 0 表示不保留离线消息，只有推送当前在线的用户可以收到。

                // apns_production: 表示APNs是否生产环境，
                // True 表示推送生产环境，False 表示要推送开发环境；如果不指定则默认为推送开发环境

                'apns_production' => false,
                // big_push_duration: 表示定速推送时长(分钟)，又名缓慢推送，把原本尽可能快的推送速度，降低下来，
                // 给定的 n 分钟内，均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送
                // 这里设置为 1 仅作为示例
//                'big_push_duration' => 1000
            ));
        try {
            $response = $push_payload->send();
            return $response;
        } catch (\JPush\Exceptions\APIConnectionException $e) {
            // try something here
            print $e;
        } catch (\JPush\Exceptions\APIRequestException $e) {
            // try something here
            print $e;
        }
    }
}


$shop_id = $_POST['id'];
$type = $_POST['type'];
if (empty($shop_id) || empty($type)) {
    $redult['code'] = '500';
    $redult['info'] = '参数错误';
    exit(json_encode($redult));
}
switch ($type) {
    case 1:
        $regis_id = strval($_POST['reg_id']);
        if (empty($regis_id)) {
            return false;
            exit;
        }
        $row_sql = $mysql->query("update dyspw_member set jiguang_id = '" . $regis_id . "' where id = " . $shop_id);
        if ($row_sql) {
            $redult['code'] = '200';
            $redult['info'] = '用户极光id绑定成功';
            exit(json_encode($redult));
        } else {
            $redult['code'] = '500';
            $redult['info'] = '用户极光id绑定失败';
            exit(json_encode($redult));
        }
        break;
    case 2:
        $c_type = $_POST['c_type'];
        switch ($c_type) {
            case 0:
                $c_type_content = '音频';
                break;
            case 1:
                $c_type_content = '视频';
                break;

        }
        $row_sql = $mysql->query("select * from dyspw_member where id = " . $shop_id);
        $row_member = $row_sql->fetch_all(MYSQLI_ASSOC);
        if (empty($row_member[0]['jiguang_id'])) {
            $redult['code'] = '500';
            $redult['info'] = '用户极光id未定义';
            exit(json_encode($redult));
        }

        $data = [
            'title' => '有新的' . $c_type_content . '通话请求···',
            'content' => '点击通知进入聊天室',
//            'name' => $row_member[0]['username'],
            'uid' => $shop_id,
//            'c_type' => $c_type
        ];

        $arr = array();
        array_push($arr, array('registration_id' => $row_member[0]['jiguang_id']));
        $JpushService = new JpushService();
        $result = $JpushService->push($c_type, $data, $arr);
        $redult['code'] = '200';
        $redult['info'] = '推送成功';
        exit(json_encode($redult));
}